const CryptoJS = require('crypto-js');
const crypto = require('crypto');
const Variable = require('./variable');

module.exports = {
    // 要加密的MD5字符串
    MD5(str) {
        // 1. 创建Hash散列算法
        let obj = crypto.createHash('md5');

        // 2. 要签名的字符串
        obj.update(str);

        // 生成十六进制的签名串
        return obj.digest('hex');
    },
    // AES加密
    encrypt(word, keyStr) {
        keyStr = keyStr ? keyStr : Variable.AES_SUFFIX;
        let key = CryptoJS.enc.Utf8.parse(keyStr);
        let srcs = CryptoJS.enc.Utf8.parse(word);
        let encrypted = CryptoJS.AES.encrypt(srcs, key, {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.Pkcs7
        });
        return encrypted.toString();
    },
    // AES解密
    decrypt(word, keyStr) {
        keyStr = keyStr ? keyStr : Variable.AES_SUFFIX;
        let key = CryptoJS.enc.Utf8.parse(keyStr);
        let decrypt = CryptoJS.AES.decrypt(word, key, {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.Pkcs7
        });
        return CryptoJS.enc.Utf8.stringify(decrypt).toString();
    }
};
